// ES6中规定可以直接在对象中写入变量和函数作为对象的属性和方法，
// 此时属性名为变量名, 属性值为变量的值。
// 对象简写在未来的使用频率极其高。
let name='zhangsan';
let age=12;
let sayName=()=>{
  console.log(this);
  // this--->当前模块
};

let obj={
  // name:name
  name,
  // age:age
  age,
  // es5方法
  // sayName:function(){
  //   console.log(this.name);
  // }
  // es6方法简写
  // sayName(){
  //   console.log(this.name);
  //   // 此时this-->obj
  // }
  // sayName:()=>{
  //   // 箭头函数没有this
  //   console.log(this);
  // }
  // sayName(){
  //   return ()=>{
  //     console.log(this.name);
  //     // 箭头函数没有this 
  //     // sayName this--->obj
  //   }
  // }
  sayName(){
    return sayName
  }
  // 如果箭头函数声明在外部 
  // 箭头函数内部没有this 内部this指向声明箭头函数时候的外部作用域中的this--{}
};
obj.sayName()();